えっ? ElasticSearchってAWSのサービスじゃなかったんですか!?|アドカレ2013 : CFn #10

えっ? ElasticSearchってAWSのサービスじゃなかったんですか!?|アドカレ2013 : CFn #10

Clock Icon2013.12.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

あけりです。
アドベントカレンダー2013:AWS CloudFormationビッグバンテンプレート』の10日目のエントリーになります。今日はElasticSearchをElasticに構築するためのテンプレートです。昨日は渡辺さんのAWSで継続的インテグレーション 〜 Jenkins編でした。

ElasticSearchとは?

ElasticSesarchとはオープンソースの全文検索エンジンです。似たようなものにApache Solrがありますが、最近は設定の簡単さや、スケーラビリティからElasticSearchの人気が高まってきているようです。 (噂によるとElasticSearchがなければCloudSearchはElasticSearchという名前だったのではないかと言われています)

オススメする構成

そうとうリッチな構成です。
ELBがあります。 こいつはport 80で受け付けて配下のElasticSearchのサーバ群に9200でつなぎに行きます。
さらにAutoScalingも贅沢に2段階で構成します。
まずはCPU使用率によるScalingをするAutoScalingGroup
次にDiskの使用率によるScalingをするAutoScalingGroupです。
Diskの使用率はCloudWatchでは取得出来ないので、CustomMetricsで対応します。

ElasticSearchこうしたらよいんじゃない?

公開テンプレート

ElasticSearch(本番用)を起動

ElasticSearch(デモ用)を起動

スタックパラメータ

VpcId EC2を起動するVPCのID(本番用テンプレートのみ)
SubnetIds ElasticSearchのEC2を起動するサブネットのID(本番用テンプレートのみ)
AvailabilityZones SubnetIdsで指定したSubnetが存在するAvailabilityZone(本番用テンプレートのみ)
maxClusterSize クラスタの最大サイズ
ElasticSearchAWSPluginVersion ElasticSearchのAWS Pluginのバージョン
SSHLocation SSHが接続可能なネットワーク(CIDR指定)
ElasticSearchClientLocation ElasticSearch(Port9200)に接続可能なネットワーク(CIDR指定)
minClusterSize 最小クラスタサイズ
ElasticSearchVersion/th>

ElasticSearchのバージョン
KeyName KeyPairの名前
InstanceType インスタンスタイプ t1.microではメモリが確保できません言われて起動できません。m1.small以上でやりましょう。

インストールされる設定ファイルなど

/usr/local/elasticsearch-${version}にElasticSearchの本体がインストールされます。
/usr/local/elasticsearchにシンボリックリンクがはられます。
/usr/local/bin/diskcheckというスクリプトがインストールされます。このスクリプトは現在のディスク使用量をCloudWatchのカスタムメトリクスに送信するためのスクリプトです。
rootのcronに上記/usr/local/bin/diskcheckを毎分実行する設定がされます。

注意点

本番用は、既存のVPC上に展開しますが、既存のVPC内のインスタンスから外にアクセス出来る必要があります。
クラスタのDiscoverのためにIAMRoleを利用するので、create stackの時にIAMいじっていいですよ的なオプションを付けて実行してください。

Demo版のAZがもしかしたら、人によっては使えないAZの可能性も有ります。 その場合、テンプレートをダウンロード後、primary、secondaryを自分が使えるAZに変更して使ってください。

まとめ

AWS CloudFormationビッグバンテンプレート、10日目はElasticSearchでした。
自動的にスケーリングしたり、何だったりと管理するものがめんどくさいものはこうやってCloudFormationでさくっと立ち上げてしまうのが楽ちんで良いですね。
運用部分も含めてCloudFormationで記述することで、別の案件で使いまわす時もあっという間に同じ構成を立ち上げる事が出来るのもありがたいです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.